בפרק הקודם למדנו על תבניות מורכבות ותנאי IF פשוטים, בפרק זה נשפר את הידע שלנו ונלמד על האופרטורים של TWIG ועל תנאי ה IF המורכבים. בנוסף נתחיל ללמוד על הלולאות של Twig.
הפרק הקודם
Twig - תבניות מתקדמות ותנאי If
הקדמה
אחרי שבפרק הקודם למדנו כיצד להפוך את התבניות שלנו למורכבות יותר ומתקדמות יותר והתחלנו ללמוד על תנאי ה IF בפרק זה נילמד על האופרטורים(operator - מפעיל) ש- Twig מציאה לנו ונתחיל ללמוד על הלולאות.
בפרישו הישיר IF = אם, operator = מפעיל\פועל.
בפרק זה נישתמש בתאגים IF, For ו- Set, בנוסף נשתמש באופרטורים עליהם נילמד בהמשך.
אופרטורים - Operators
הסבר
אופרטור הוא משהו שלוקח ערכים(אחד או יותר) (או ביטויים, בז'רגון תכנות) ומניב ערך אחר (כך שהבנייה עצם הופכת לביטוי).
מה שאומר שמתרטו של אופרטור היא להפוך משפט פשוט לתנאי - ביטוי השוואה בין 2 או יותר ערכים.
אופרטורים יכולים להיות מחולקים לקבוצות לפי מספר הערכים שהם לוקחים.
אופרטורים יונארים לקחים ערך אחד בלבד, לדוגמה האופרטור !(סימן שאלה) (לא אופרטור הגיוני) או + + (אופרטור קידום).
אופרטורים בינאריים לוקחים שני ערכים, כגון האופרטורים המוכרים + (פלוס) ו - (מינוס), ובמרבית האופרטורים של PHP נופלים בקטגוריה הזו.
השוני
ב- Twig זה קצת שונה - כאן האופרטורים הם לא && או || אלה הפירוש הישיר שלהם באנגלית, לדוגמא && הוא and ו- || הוא or וכך הלאה...
רוב האופרטורים של Twig בנויים בצורה כזו. לפי דעתי ההפיכה של האופרטורים למילים - תרגום ישיר למשמעותם הוא בזבוז.
רשימת אופרטורים
להלן טבלה שהכנתי של אופרטורים, צד שמאל - PHP צד ימין - TWIG באמצע - הסבר:
הורדה(.Html): כאן
דוגמאות שימוש
{% if 5 > 4 %}
Five bigger than four.
{% endif %}
Five bigger than four.
{% endif %}
{% if 5 in [1,2,3,4,5] %}
Five is in 1,2,3,4,5 array.
{% endif %}
{% if 5 in 1..5 %}
Five is in 1,2,3,4,5 array.
{% endif %}
Five is in 1,2,3,4,5 array.
{% endif %}
{% if 5 in 1..5 %}
Five is in 1,2,3,4,5 array.
{% endif %}
{% if 5%1 == 0 %}
Five / one has no rest.
{% endif %}
Five / one has no rest.
{% endif %}
תנאי IF
כמו ב PHP המקורי ניתן לעשות תנאים בתוך התבנית, לשם כך יש את התאג if.
מבנה התנאי דיי דומה למבנה שלו ב PHP:
{% if (condition) %}
{% else if (condition) %}
{% else %}
{% endif %}
{% else if (condition) %}
{% else %}
{% endif %}
condition זה התנאי שאתם מציבים על ידי שימוש באופרטורים שלמדנו בחלק הקודם במדריך.
הסבר
התנאי הראשון מתבצע אם הוא לא נכון (התנאי מחזיר FALSE) אז עוברים ל else if (פירוש: אחרת תנאי - אם לא התנאי הקודם תנסה את התנאי הזה).
אם כל התנאים לא נכונים מגיעים ל else שזה אומר אחרת תעשה משהו, אם כל התנאים לפניך לא נכונים(מחזירים תשובה שלישית - FALSE) תעשה את המ שכתוב בי.
כמובן שמספר ה else if ים בקוד אינו מוגבן.
תנאי זה - תנאי מורכב זה דומה מאוד לתחביר של switch, בפירושו ובביצועו.
דוגמאות
{% if 5 >= 6 %}
Five bigger than six.
{% else if 5 >= 7 %}
Five bigger than seven.
{% else if 5 >= 8 %}
Five bigger than eit.
{% else if 5 >= 9 %}
Five bigger than nine.
{% else %}
No condition is matched!
{% endif %}
Five bigger than six.
{% else if 5 >= 7 %}
Five bigger than seven.
{% else if 5 >= 8 %}
Five bigger than eit.
{% else if 5 >= 9 %}
Five bigger than nine.
{% else %}
No condition is matched!
{% endif %}
לולאות
בחלק זה של המדריך נילמד כיצד להשתמש בtag פור - for, שמאפשר לבצע לולאה.
שימו לב * תאג ה for פועל כ foreach ולא כ for רגיל - כמה שזה נישמע לא הגיוני זה נכון.
המבנה של Foreach מספק דרך קלה לחזר על מערכים.
foreach עובד רק על מערכים ואובייקטים, וינפיק שגיאה בעת הניסיון להשתמש בו על משתנה עם סוג נתונים אחר או משתנים לא מאותחל.
תחביר
{% for [var] in [var(array)] %}
{# loop body #}
{% endfor %}
{# loop body #}
{% endfor %}
foreach($vararray as $var){
//loop body
}
//loop body
}
יצירת לוח הכפל - השוואה
על מנת ליצור לוח הכפל עלינו ליצור 2 לולאות, כל אחד תחזור על עצמה 10 פעמים.
כל פעם המספר של השורה יוכפל במספר העמוד וככה ניצול כפולות.
{% for num1 in 1..10 %}
{% for num2 in 1..10 %}
{{ num2*num1 }}
{% endfor %}
<br />
{% endfor %}
{% for num2 in 1..10 %}
{{ num2*num1 }}
{% endfor %}
<br />
{% endfor %}
$values = range(1,10);
foreach($values as $num1){
foreach ($values as $num2){
$num = $num1*$num2;
echo $num. " ";
}
echo '<br />';
}
foreach($values as $num1){
foreach ($values as $num2){
$num = $num1*$num2;
echo $num. " ";
}
echo '<br />';
}
תוצאה:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
קוד:
1 2 3 4 5 6 7 8 9 10 <br />
2 4 6 8 10 12 14 16 18 20 <br />
3 6 9 12 15 18 21 24 27 30 <br />
4 8 12 16 20 24 28 32 36 40 <br />
5 10 15 20 25 30 35 40 45 50 <br />
6 12 18 24 30 36 42 48 54 60 <br />
7 14 21 28 35 42 49 56 63 70 <br />
8 16 24 32 40 48 56 64 72 80 <br />
9 18 27 36 45 54 63 72 81 90 <br />
10 20 30 40 50 60 70 80 90 100 <br />
2 4 6 8 10 12 14 16 18 20 <br />
3 6 9 12 15 18 21 24 27 30 <br />
4 8 12 16 20 24 28 32 36 40 <br />
5 10 15 20 25 30 35 40 45 50 <br />
6 12 18 24 30 36 42 48 54 60 <br />
7 14 21 28 35 42 49 56 63 70 <br />
8 16 24 32 40 48 56 64 72 80 <br />
9 18 27 36 45 54 63 72 81 90 <br />
10 20 30 40 50 60 70 80 90 100 <br />
במדריך הבא
* לולאות מתקדמות
* אופרטורים מיוחדים
* הקדמה לפילטרים